(define (problem ptool) 
  (:domain tropos-domain) 
  (:objects     
    foo - t_gtype
    A1 A2 A3 A4 A5 A6 A7 A8 A9  - t_actor
    G0 G1 G2 G3 G4 G5 G6 G7 G8 G9 G10 G11 G12 G13 G14 G15 G16 G17 G18 G19 G20 G21 G22 G23 G24 G25 G26 G27 G28 G29 G30 G31 G32 G33 - t_goal
  ) 
  (:goal (and 
  	  (satisfied G0)
   	  (satisfied G9)
  	  (satisfied G15)
   	  (satisfied G18)
  	  (satisfied G26)
 
  )) 
  (:init 
	 (= (satisfaction_coeff) 1)
	 (= (work_load_coeff) 1)
	 ;--------------------------------
	 
	 (requests A1 G0)
	 (requests A1 G26)  
	 (requests A4 G9)  
	 (requests A4 G32) 
	 (requests A5 G15)
	 (requests A5 G29)  
	 (requests A7 G18)  
	 ;-----------------------------

     ;(and_subgoal2 G33 G1 G8)  
     ;(or_subgoal2 G0 G12 G33)  
     (and_subgoal2 G0 G1 G8)  	 	 
     (and_subgoal2 G1 G2 G4)  	
	 (and_subgoal3 G8 G5 G6 G7)       
	 (and_subgoal3 G9 G28 G11 G12)       
     (and_subgoal3 G11 G16 G17 G27)      
     ;(and_subgoal2 G11 G16 G17)        
     (and_subgoal2 G12 G13 G14)  
     (and_subgoal2 G12 G18 G26)    
	 (and_subgoal2 G13 G30 G25) 
     (and_subgoal2 G18 G24 G25)     
     (and_subgoal2 G21 G19 G20)              
     (and_subgoal2 G27 G30 G31) 
	 (and_subgoal3 G28 G10 G21 G22)                 
	 ;------------------------------
	  
	 ;(is_means_end G12 G0)
     (is_means_end G29 G24)
     (is_means_end G32 G30)
     (is_means_end G32 G13)
     (is_means_end G32 G16)
	 ;------------------------------
          
     (can_provide A1 G25) 
	 
     (can_provide A2 G2)
     (can_provide A2 G4)              
     (can_provide A2 G10) 
	 
     (can_provide A3 G2)
     (can_provide A3 G4)                    
     (can_provide A3 G5)    
     (can_provide A3 G6)
     (can_provide A3 G7)    
	 
     (can_provide A4 G15) 
	      
	 (can_provide A5 G2)
     (can_provide A5 G4)    
     (can_provide A5 G5)
     (can_provide A5 G6)     	                                 
     (can_provide A5 G7)  	 
	 (can_provide A5 G10)
     (can_provide A5 G13)    
     (can_provide A5 G14)
     (can_provide A5 G16)     	                                 
     (can_provide A5 G17)   	      
     (can_provide A5 G29)           
     (can_provide A5 G32)  
	 
	 (can_provide A6 G10)  
     (can_provide A6 G19)       
     (can_provide A6 G20)
	 
     (can_provide A7 G26) 
	 
     (can_provide A9 G22)      
     (can_provide A9 G30)  
     (can_provide A9 G31)
	 ;-------------------------------

	 ;(can_depend_on_g A1 A2 G1) 
	 ;(can_depend_on_g A1 A3 G1)                                       
     ;(can_depend_on_g A1 A3 G8)  	                       
     ;(can_depend_on_g A1 A5 G12)        
     ;(can_depend_on_g A1 A7 G26) 	 
	 ;(can_depend_on_g A4 A1 G25)
     ;(can_depend_on_g A4 A2 G10)  	                            
     ;(can_depend_on_g A4 A5 G10)  	                       
	 ;(can_depend_on_g A4 A5 G11)          
     ;(can_depend_on_g A4 A5 G12)  
     ;(can_depend_on_g A4 A5 G32)  
	 ;(can_depend_on_g A4 A6 G10)
     ;(can_depend_on_g A4 A6 G21)
	 ;(can_depend_on_g A4 A9 G22)                         	                       
     ;(can_depend_on_g A4 A9 G30)
     ;(can_depend_on_g A4 A9 G31)   
     ;(can_depend_on_g A5 A4 G15) 
     ;(can_depend_on_g A7 A4 G18)
	 ;--------------------------------

	 (= (max_work_load A1) 500) ; maximum workload of an actor, unit = cost
	 (= (max_work_load A2) 500)
	 (= (max_work_load A3) 500)	 
	 (= (max_work_load A4) 500)
	 (= (max_work_load A5) 500)
	 (= (max_work_load A6) 500)	 
	 (= (max_work_load A7) 500)
	 (= (max_work_load A8) 500)
	 (= (max_work_load A9) 500)	 
	 ;--------------------------------

 	 (= (max_job_at_hand A1) 5) ; maximum goal/job an actor can do at a moment, unit = goal/job
	 (= (max_job_at_hand A2) 5)
	 (= (max_job_at_hand A3) 5)
	 (= (max_job_at_hand A4) 5)
	 (= (max_job_at_hand A5) 7)
	 (= (max_job_at_hand A6) 5)
	 (= (max_job_at_hand A7) 5)
	 (= (max_job_at_hand A8) 5)
	 (= (max_job_at_hand A9) 5)
	 ;-------------------------------

     ;(= (expected_satisfaction_degree G1)  100)
	 ;----------------------------------

	 (= (satisfaction_ability A1 G25) 100) ; only if actor can provide goal (most of them will be leaf goal), unit = degree
	 ;100 = excellent, 75 = good, 50 = average, 25 = low, 0 = not provide
	 (= (satisfaction_ability A2 G2) 50)
	 (= (satisfaction_ability A2 G4) 50)
	 (= (satisfaction_ability A2 G10) 50)

	 (= (satisfaction_ability A3 G2) 75)
	 (= (satisfaction_ability A3 G4) 75)
	 (= (satisfaction_ability A3 G5) 75)
	 (= (satisfaction_ability A3 G6) 75)
	 (= (satisfaction_ability A3 G7) 75)

	 (= (satisfaction_ability A4 G15) 100)

	 (= (satisfaction_ability A5 G2) 100)
	 (= (satisfaction_ability A5 G4) 100)
	 (= (satisfaction_ability A5 G5) 100)
	 (= (satisfaction_ability A5 G6) 100)
	 (= (satisfaction_ability A5 G7) 100)
	 (= (satisfaction_ability A5 G10) 75)
	 (= (satisfaction_ability A5 G14) 100)
	 (= (satisfaction_ability A5 G16) 100)
	 (= (satisfaction_ability A5 G17) 100)
	 (= (satisfaction_ability A5 G29) 100)
	 (= (satisfaction_ability A5 G32) 100)

	 (= (satisfaction_ability A6 G10) 100)
	 (= (satisfaction_ability A6 G19) 100)
	 (= (satisfaction_ability A6 G20) 100)

	 (= (satisfaction_ability A7 G26) 100)

     (= (satisfaction_ability A9 G22) 100)
	 (= (satisfaction_ability A9 G30) 100)
	 (= (satisfaction_ability A9 G31) 100)
	 ;------------------------------------

	 (= (work_effort A1 G25) 50);only if actor can provide goal, cost that actor spend to do goal, unit = cost
	 ;100 = innocent ; 75 = has some knowledge; 50 = has good knowledge/trained; 25 = well-trained
	 
	 (= (work_effort A2 G2) 75)
	 (= (work_effort A2 G4) 75)
	 (= (work_effort A2 G10) 75)

	 (= (work_effort A3 G2) 50)
	 (= (work_effort A3 G4) 50)
	 (= (work_effort A3 G5) 50)
	 (= (work_effort A3 G6) 50)
	 (= (work_effort A3 G7) 50)

	 (= (work_effort A4 G15) 25)

	 (= (work_effort A5 G2) 25)
	 (= (work_effort A5 G4) 25)
	 (= (work_effort A5 G5) 25)
	 (= (work_effort A5 G6) 25)
	 (= (work_effort A5 G7) 25)
	 (= (work_effort A5 G10) 25)
	 (= (work_effort A5 G14) 25)
	 (= (work_effort A5 G16) 25)
	 (= (work_effort A5 G17) 25)
	 (= (work_effort A5 G29) 25)
	 (= (work_effort A5 G32) 25)

	 (= (work_effort A6 G10) 25)
	 (= (work_effort A6 G19) 25)
	 (= (work_effort A6 G20) 25)

	 (= (work_effort A7 G26) 25)

     (= (work_effort A9 G22) 25)
	 (= (work_effort A9 G30) 25)
	 (= (work_effort A9 G31) 25)
	 
  )
  (:metric maximize (rt_plan_quality))
)
